// 购物车页面逻辑
Page({
    data: {
        cartItems: [],
        totalPrice: 0,
        totalItems: 0,
        cartCount: 0,
        // 购物车分析结果
        analysisResult: null,
        // 优惠券信息
        coupons: [
          { id: 1, name: '满100减10', threshold: 100, discount: 10, enabled: false },
          { id: 2, name: '满300减50', threshold: 300, discount: 50, enabled: false },
          { id: 3, name: '满500减100', threshold: 500, discount: 100, enabled: false }
        ],
        // 选中的优惠券
        selectedCoupon: null
    },
    
    onLoad() {
        // 从全局获取购物车数据
        const app = getApp();
        console.log('购物车数据:', app.globalData.cartItems);
        if (app.globalData.cartItems) {
            this.setData({
                cartItems: app.globalData.cartItems,
                totalPrice: this.calculateTotalPrice(app.globalData.cartItems),
                totalItems: this.calculateTotalItems(app.globalData.cartItems)
            });
        }
        // 分析购物车
        this.analyzeCart();
    },
    
    onShow() {
        // 每次进入页面时重新获取购物车数据
        const app = getApp();
        console.log('购物车数据:', app.globalData.cartItems);
        if (app.globalData.cartItems) {
            this.setData({
                cartItems: app.globalData.cartItems,
                totalPrice: this.calculateTotalPrice(app.globalData.cartItems),
                totalItems: this.calculateTotalItems(app.globalData.cartItems)
            });
        }
        // 分析购物车
        this.analyzeCart();
    },
    
    /**
     * 计算总价
     * @param {Array} items - 购物车商品列表
     * @returns {number} 总价
     */
    calculateTotalPrice(items) {
        return items.reduce((total, item) => total + item.minPrice * (item.count || 1), 0);
    },
    
    /**
     * 计算商品总数
     * @param {Array} items - 购物车商品列表
     * @returns {number} 商品总数
     */
    calculateTotalItems(items) {
        return items.reduce((total, item) => total + (item.count || 1), 0);
    },
    
    /**
     * 分析购物车
     */
    analyzeCart() {
        const { cartItems, totalPrice } = this.data;
        
        if (cartItems.length === 0) {
            this.setData({
                analysisResult: null
            });
            return;
        }
        
        // 分析商品分类
        const categoryMap = {};
        cartItems.forEach(item => {
            if (categoryMap[item.category]) {
                categoryMap[item.category] += item.count || 1;
            } else {
                categoryMap[item.category] = item.count || 1;
            }
        });
        
        const categories = Object.keys(categoryMap).map(category => ({
            name: category,
            count: categoryMap[category]
        }));
        
        // 生成建议
        const suggestions = this.generateSuggestions();
        console.log('最终生成的建议列表:', suggestions);
        
        // 检查可用优惠券
        const availableCoupons = this.data.coupons.map(coupon => ({
            ...coupon,
            enabled: totalPrice >= coupon.threshold
        }));
        
        this.setData({
            analysisResult: {
                categories,
                suggestions
            },
            coupons: availableCoupons
        }, () => {
            // 数据更新完成后的回调，用于验证
            console.log('分析结果已更新:', this.data.analysisResult);
        });
    },
    
    /**
     * 生成购物建议
     * @returns {Array} 建议列表
     */
    generateSuggestions() {
        const { cartItems } = this.data;
        const suggestions = [];
        
        // 调试日志：打印当前购物车商品
        console.log('当前购物车商品:', cartItems);
        
        // 确保购物车有商品才生成建议
        if (!cartItems || cartItems.length === 0) {
            console.log('购物车为空，不生成建议');
            return suggestions;
        }
        
        // 检查是否需要配件（放宽判断条件）
        const hasPhone = cartItems.some(item => 
            (item.category && item.category.includes('手机')) || 
            (item.name && item.name.includes('手机'))
        );
        const hasCharger = cartItems.some(item => 
            (item.category && item.category.includes('配件')) || 
            (item.name && (item.name.includes('充电') || item.name.includes('数据线')))
        );
        
        console.log('手机检测:', hasPhone, '充电器检测:', hasCharger);
        if (hasPhone && !hasCharger) {
            suggestions.push({
                type: 'accessory',
                message: '您购买了手机，可能还需要充电器或数据线',
                action: '去选购'
            });
        }
        
        // 检查是否购买了高价值商品（降低判断阈值便于测试）
        const highValueItems = cartItems.filter(item => item.minPrice > 500);
        console.log('高价值商品数量:', highValueItems.length);
        if (highValueItems.length > 0) {
            suggestions.push({
                type: 'protection',
                message: '您购买了高价值商品，建议考虑购买保护套或保险服务',
                action: '查看保险'
            });
        }
        
        // 检查购物车总价（降低免运费门槛便于测试）
        const totalPrice = this.calculateTotalPrice(cartItems);
        console.log('购物车总价:', totalPrice);
        if (totalPrice < 50) {
            suggestions.push({
                type: 'shipping',
                message: `再购买¥${(50 - totalPrice).toFixed(2)}元可免运费`,
                action: '去凑单'
            });
        }
        
        // 添加保底建议，确保至少有一条建议
        if (suggestions.length === 0) {
            suggestions.push({
                type: 'default',
                message: '查看更多优惠活动，享受更多折扣',
                action: '去看看'
            });
        }
        
        console.log('生成的建议:', suggestions);
        return suggestions;
    },
    
    /**
     * 减少商品数量
     * @param {Object} e 事件对象
     */
    decreaseItem(e) {
        const id = e.currentTarget.dataset.id;
        const app = getApp();
        const cartItems = app.globalData.cartItems.map(item => {
            if (item.id === id && (item.count || 1) > 1) {
                item.count = (item.count || 1) - 1;
            } else if (item.id === id && (item.count || 1) === 1) {
                // 如果数量为1，点击减少则删除该商品
                return null;
            }
            return item;
        }).filter(item => item !== null); // 过滤掉数量为0的商品
        
        app.globalData.cartItems = cartItems;
        this.setData({
            cartItems,
            totalPrice: this.calculateTotalPrice(cartItems),
            totalItems: this.calculateTotalItems(cartItems)
        });
        
        // 重新分析购物车
        this.analyzeCart();
    },
    
    /**
     * 增加商品数量
     * @param {Object} e 事件对象
     */
    increaseItem(e) {
        const id = e.currentTarget.dataset.id;
        const app = getApp();
        const cartItems = app.globalData.cartItems.map(item => {
            if (item.id === id) {
                item.count = (item.count || 1) + 1;
            }
            return item;
        });
        app.globalData.cartItems = cartItems;
        this.setData({
            cartItems,
            totalPrice: this.calculateTotalPrice(cartItems),
            totalItems: this.calculateTotalItems(cartItems)
        });
        
        // 重新分析购物车
        this.analyzeCart();
    },
    
    /**
     * 删除商品
     * @param {Object} e 事件对象
     */
    deleteItem(e) {
        const id = e.currentTarget.dataset.id;
        const app = getApp();
        const cartItems = app.globalData.cartItems.filter(item => item.id !== id);
        app.globalData.cartItems = cartItems;
        this.setData({
            cartItems,
            totalPrice: this.calculateTotalPrice(cartItems),
            totalItems: this.calculateTotalItems(cartItems)
        });
        
        // 重新分析购物车
        this.analyzeCart();
        
        wx.showToast({
            title: '已删除商品',
            icon: 'success'
        });
    },
    
    /**
     * 选择优惠券
     * @param {Object} e 事件对象
     */
    selectCoupon(e) {
        const coupon = e.currentTarget.dataset.coupon;
        if (!coupon.enabled) {
            wx.showToast({
                title: `满${coupon.threshold}元可用`,
                icon: 'none'
            });
            return;
        }
        
        this.setData({
            selectedCoupon: coupon
        });
        
        wx.showToast({
            title: `已选择${coupon.name}`,
            icon: 'success'
        });
    },
    
    /**
     * 取消选择优惠券
     * @param {Object} e 事件对象
     */
    removeCoupon(e) {
        const coupon = e.currentTarget.dataset.coupon;
        if (this.data.selectedCoupon && this.data.selectedCoupon.id === coupon.id) {
            this.setData({
                selectedCoupon: null
            });
            
            wx.showToast({
                title: '已取消优惠券',
                icon: 'success'
            });
        }
    },
    
    /**
     * 去逛逛
     */
    goShopping() {
        wx.switchTab({
            url: '/pages/index/index'
        });
    },
    
    /**
     * 结算
     */
    checkout() {
      const { cartItems, totalPrice, selectedCoupon } = this.data;
      
      if (cartItems.length === 0) {
        wx.showToast({
          title: '购物车为空',
          icon: 'none'
        });
        return;
      }
      
      // 计算最终价格
      let finalPrice = totalPrice;
      if (selectedCoupon) {
        finalPrice = Math.max(0, totalPrice - selectedCoupon.discount);
      }
      
      wx.showModal({
        title: '确认结算',
        content: `商品总价：¥${totalPrice.toFixed(2)}\n优惠减免：¥${(totalPrice - finalPrice).toFixed(2)}\n实际支付：¥${finalPrice.toFixed(2)}`,
        success: (res) => {
          if (res.confirm) {
            const app = getApp();
            
            wx.showToast({
              title: '结算成功',
              icon: 'success',
              duration: 2000
            });
            
            // 清空全局购物车数据
            app.globalData.cartItems = [];
            app.globalData.cartCount = 0;  // 添加这行代码，确保全局购物车计数也被清零
            
            // 清空本地购物车数据
            this.setData({
              cartItems: [],
              totalPrice: 0,
              totalItems: 0,
              analysisResult: null,
              selectedCoupon: null
            });
            
            // 延迟返回，让用户看到提示
            setTimeout(() => {
              wx.navigateBack();
            }, 1500);
          }
        }
      });
    }
})
